//
//  DMInterstitialScenes.h
//  DualMediationSDK
//
//  Created by YeJary on 2025/1/15.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

/**
 * 插屏广告场景枚举
 */
typedef NS_ENUM(NSUInteger, DMInterstitialScene) {
    DMInterstitialSceneLevelWin,     // 关卡胜利
    DMInterstitialSceneLevelFail,    // 关卡失败
    DMInterstitialSceneLevelRetry,   // 关卡重试
    DMInterstitialSceneLevelWait     // 关卡等待
};

/**
 * 插屏广告场景常量定义
 * 与Android版本保持一致的场景命名和功能
 */

#pragma mark - 内置自动触发场景

/// 关卡重玩场景（策略触发）
FOUNDATION_EXPORT NSString * const SCENE_INTER_LEVEL_RETRY;

/// 游戏时长场景（策略触发）
FOUNDATION_EXPORT NSString * const SCENE_INTER_PLAY_TIME;

/// 关卡等待场景（策略触发，可拦截）
FOUNDATION_EXPORT NSString * const SCENE_INTER_LEVEL_WAIT;

/// 关卡胜利场景（游戏端手动触发）
FOUNDATION_EXPORT NSString * const SCENE_INTER_LEVEL_WIN;

/// 关卡失败场景（游戏端手动触发）
FOUNDATION_EXPORT NSString * const SCENE_INTER_LEVEL_FAIL;

/// 开屏冷启动场景
FOUNDATION_EXPORT NSString * const SCENE_SPLASH_COOL;

/// 开屏热启动场景
FOUNDATION_EXPORT NSString * const SCENE_SPLASH_HOT;

/// 原生广告结算场景
FOUNDATION_EXPORT NSString * const SCENE_NATIVE_SETTLEMENT;

#pragma mark - 场景类型判断工具

@interface DMInterstitialScenes : NSObject

/**
 * 判断是否为内置自动触发场景
 * @param scene 场景名称
 * @return YES表示是内置场景，NO表示需要手动调用
 */
+ (BOOL)isBuiltInScene:(NSString *)scene;

/**
 * 判断是否为可拦截场景
 * @param scene 场景名称
 * @return YES表示可以被拦截，NO表示不可拦截
 */
+ (BOOL)isInterceptableScene:(NSString *)scene;

/**
 * 获取所有支持的插屏广告场景
 * @return 场景数组
 */
+ (NSArray<NSString *> *)allInterstitialScenes;

/**
 * 将字符串场景转换为枚举类型
 * @param sceneString 场景字符串
 * @return 对应的枚举值
 */
+ (DMInterstitialScene)sceneEnumFromString:(NSString *)sceneString;

@end

NS_ASSUME_NONNULL_END
